-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor!: ADR-038 go-plugin system #14207
refactor!: ADR-038 go-plugin system #14207
Conversation
and refactoring file streamer to output single file for each block update spec sort storeKey once at first move MemoryListener store package
@egaxhaj could you update to master and then we can merge this pr. |
@egaxhaj would be good to get more information on this as well. |
Personally I don't think we should be adding so many replace directives to go.mod files if a go.work file would do that job. Does CI fail without the replace directive? I also don't understand why we're committing 44 MB of opaque binary files. |
Replace directives is something we do now or we run go get on the version in the pr. This removes the need for the replace tag. Then once tagged dependabot makes the change. We dont commit the go.work file, it is mainly meant for local development. this has caused some confusion |
These are the go example plugin binaries (stdout, file). I can remove the |
lets remove the file and the binary may be harder. |
What is a "replace tag"?
I know what we don't, and also understand the function of a go.work is for local development. That's why I asked if CI failed if the replace directives are removed. So, does it? |
https://go.dev/ref/mod#go-mod-file-replace same thing as replace directive
On other prs it can, im not sure about this pr. |
I've removed the file plugin binary and added a .gitignore and readme. Conflicts have been resolved as well. |
@tac0turtle can we coordinate the merge for this PR? It's hard to keep up with other merges to main. I've had to update the branch 3 times in the last hour. |
I am certain that some tests in CI will fail on this PR. Running |
🚀 |
Someone from the team please. I'm not familiar with the process the team follows. |
for _, abciListener := range app.streamingManager.ABCIListeners { | ||
ctx := app.deliverState.ctx | ||
blockHeight := ctx.BlockHeight() | ||
if err := abciListener.ListenBeginBlock(app.deliverState.ctx, req, res); err != nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Curious, doing the chore, and here, why app.deliverState.ctx
is used and not ctx
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oversight. You can go ahead and use ctx
.
Co-authored-by: HuangYi <huang@crypto.com> Co-authored-by: Ryan Christoffersen <12519942+ryanchristo@users.noreply.github.com>
Description
For #10096
replaces #11691
implements #13473
This is an extension and refactor of the existing ADR-038 streaming service work to introduce a plugin system over gRPC to the SDK and load streaming services using the hashicorp/go-plugin system rather the approach taken in #11691 (which uses Go's built in Plugins API).
The plugin system introduced here is meant to be extensible, so that if other components/features of the SDK wish to be included as plugins in the future they can write plugins with minimal effort by defining an interface and a gRPC message protocol and leveraging the built in plugin system.
Closes: #XXXX
Author Checklist
All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.
I have...
!
to the type prefix if API or client breaking changeCHANGELOG.md
Reviewers Checklist
All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.
I have...
!
in the type prefix if API or client breaking change